package com.shujia.wyh.day26.homework;

import java.io.*;

/*
        2.假设从入学开始所有书写的Java类代码都在D:\IdeaProjects\bigdata17\src\com\shujia\wyh文件夹下，
        包括多级子文件夹。使用IO流获取从入学开始，到目前为止已经写了多少行Java代码。

        分析：
            1、先获取当前wyh所有的文件夹和文件的File对象数组
            2、判断是否是文件
                如果不是文件，继续获取当前目录下所有文件夹和文件的File对象数组
                是文件，判断是否以.java后缀
                    1）读取当前文件，使用BufferReader读取，每读取一行，num++
                    2）若不是以.java后缀，不管
 */
public class Test4 {
    public static void main(String[] args) throws IOException {
        //将总目录封装成File对象
        File file = new File("D:\\IdeaProjects\\bigdata17\\src\\com\\shujia\\wyh");
        //定义一个BufferedReader变量
//        BufferedReader br = null;
//        //定义一个变量统计总的行数
//        int sum = 0;

        //调用方法计算代码的总行数
        int number = countRowsNumber(file);
        System.out.println("代码的总行数：" + number);

    }

    public static int countRowsNumber(File file) {
        //获取当前目录下所有的文件和文件夹组成File对象
        File[] files = file.listFiles();

        //定义一个变量统计总的行数
        int sum = 0;

        if (files.length != 0) {
            //遍历数组，获取File对象
            for (File f : files) {
                if (f.isDirectory()) {
                    sum = sum + countRowsNumber(f);
                } else {
                    System.out.println(f.getName());
                    if (f.getName().endsWith(".java")) {
                        try {
                            BufferedReader br = new BufferedReader(new FileReader(f.getAbsolutePath()));
                            String line = null;
                            while ((line = br.readLine()) != null) {
                                sum++;
                            }
//                            return sum;
                        }catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
            }
        } else {
            return 0;
        }

        return sum;

    }
}
